home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / sgml / msdos / sgmlug / hytime.met < prev    next >
Encoding:
Text File  |  1992-08-27  |  65.5 KB  |  1,296 lines

  1. *** N.B.: This is the corrected version as of November 1, 1991.  Discard
  2. *** all previous versions!  This is the one that goes with the October 10,
  3. *** 1991 Draft International Standard.  Previous versions were in error!
  4. ***
  5. <!-- This file contains the formal SGML specifications from the HyTime
  6.      standard (ISO/IEC DIS 10744) released October, 1991.  It is not a
  7.      true DTD, but a "meta-DTD" that specifies the architectural forms.
  8.      Consult the standard for details.
  9. -->
  10. <!DOCTYPE doc [
  11.  
  12. <!-- NOTE: The section heading comments identify the
  13.      corresponding clause headings in the body of the standard.
  14.      Those in uppercase identify HyTime modules.
  15.      Consult the standard for other conventions and explanations.
  16. -->
  17.                          <!-- BASE MODULE -->
  18.                <!-- HyTime Architectural Form Name -->
  19. <!attlist all-hyaf
  20.                    HyTime   -- HyTime architectural form --
  21.                             -- Required #FIXED value as specified
  22.                                for individual architectural form --
  23.                             NAME     #FIXED "formname"
  24. >
  25.  
  26.                        <!-- HyTime Document -->
  27. <!ENTITY % loc     -- Location address architectural forms --
  28.  "bibloc|nameloc|coordloc|strloc|tokenloc|treeloc|pathloc|attloc|notloc|fcsloc">
  29. <!ENTITY % link    -- Hyperlink architectural forms --
  30.            "linkend|ilink|agglink|spanlink">
  31. <!ENTITY % object  -- Architectural forms allowed in events --
  32.            "nHyTime|clink|pause|hold|wallpapr|accanch|fcs">
  33. <!ENTITY % resbase -- Resource architectural forms: base module --
  34.            "activity|dvlist|desctab|lexmodel">
  35. <!ENTITY % resmeas -- Resource architectural forms: measurement module --
  36.            "dimspec|dimref|markfun|measure">
  37. <!ENTITY % resfcs  -- Resource architectural forms: FCS module --
  38.            "exrecon|calref">
  39. <!ENTITY % resrend -- Resource architectural forms: rendition module --
  40.            "prorule|modrule|wndpatch|modpatch">
  41. <!ENTITY % resorce -- Resource architectural forms: all modules --
  42.            "%resbase;|%resmeas;|%resfcs;|%resrend;">
  43. <!ENTITY % eltype  -- Standard element types --
  44.            "HyLex|HyFunk|HyOp">
  45. <!element doc      -- HyTime document element --
  46.                    - O      ((%object;)|(%resorce;)|(%eltype;))+ +(%loc;|%link)>
  47. <!attlist doc      HyTime   NAME     #FIXED doc
  48.                    id       ID       #IMPLIED
  49.                             -- docdim attributes --
  50. >
  51. <!element nHyTime  -- Pseudo-form: Non-HyTime elements and/or #PCDATA --
  52.                    -- "nHyTime?": content can be empty; "nHyTime": non-empty --
  53.                    - O      ((%object;)|(%resorce;)|(%eltype;))+ +(%loc;|%link)
  54. >
  55.  
  56.               <!-- HyTime Identification Attributes -->
  57. <!attlist all-hyid
  58.                    id       -- SGML unique identifier --
  59.                             ID       #IMPLIED -- Default: none --
  60.                    HyNames  -- User names for HyTime attributes --
  61.                             -- lextype(ATTNAME, s+, NAME,
  62.                                   (s+, ATTNAME, s+, NAME)*) --
  63.                             CDATA    #FIXED "" -- Default: none --
  64.                    conloc   -- Content location (if not in syntactic content) --
  65.                             -- Can be any data if content model is all data,
  66.                                or else must conform to content model --
  67.                             -- reftype(#ANY) --
  68.                             -- lextype(IDREF) --
  69.                             CDATA    #CONREF -- Default: syntactic content --
  70.                    conlocx  -- Content location extraction --
  71.                             -- Choice: EXTRACT the content of the element
  72.                                at the content location, or USE the element
  73.                                or data at the content location --
  74.                             (extract|use) use
  75. >
  76.  
  77.                         <!-- Lexical Types -->
  78. <!attlist all-lex
  79.                    lextype  -- Lexical types of CDATA attribute values
  80.                                or character data content --
  81.                             -- Constraint: a given ATTNAME or #CONTENT
  82.                                can occur only once; a NAME must be an ltn of a
  83.                                lexmodel whose element type is the corresponding
  84.                                GI in lexmodel --
  85.                             -- lextype((ATTNAME|(rni,"CONTENT")), s+, NAME,
  86.                                   (s+, (ATTNAME|(rni,"CONTENT")), s+, NAME)*) --
  87.                             CDATA    #FIXED "" -- Default: none defined --
  88.                    lexmodel -- Lexical model notations used by lextype --
  89.                             -- Constraint: 1 per attribute or 1 for all; must
  90.                                be GIs of lexmodel form element types --
  91.                             -- lextype(gil) --
  92.                             CDATA    #FIXED "" -- Default: none --
  93. >
  94. <!element lexmodel -- Lexical model --
  95.                    - O      (nHyTime)>
  96. <!attlist lexmodel HyTime   NAME     #FIXED lexmodel
  97.                    conloc   IDREF    #CONREF
  98.                             -- lexmodel attributes --
  99.                    ltn      -- Lexical type name --
  100.                             NAME     #REQUIRED
  101.                    notation -- Data content notation --
  102.                             NAME     #REQUIRED  -- #FIXED recommended --
  103. >
  104.  
  105.                 <!-- Attribute Value Element Types -->
  106. <!attlist all-elt
  107.                    eltype   -- Element types of attribute values --
  108.                             -- Attribute is declared as IDREF --
  109.                             -- Constraint: an ATTNAME can only occur once --
  110.                             -- lextype(ATTNAME, s+, GI,
  111.                                   (s+, ATTNAME, s+, GI)*) --
  112.                             CDATA    #FIXED "" -- Default: none defined --
  113. >
  114.  
  115.                    <!-- Reference Element Types -->
  116. <!attlist all-reft
  117.                    reftype  -- Element types of ID references
  118.                                used as true references (e.g., link ends) --
  119.                             -- Constraint: types apply to anchors, not
  120.                                intermediate location addresses --
  121.                             -- lextype((ATTNAME|(rni,"CONTENT")),
  122.                                             s+, (GI|(rni,"ANY")))+ --
  123.                             CDATA    #FIXED "" -- Default: none defined --
  124. >
  125.  
  126.                  <!-- Bit Combination Skip Count -->
  127. <!attlist all-bits
  128.                    bitskip  -- Number of unparsed bit combinations
  129.                                to skip till end of element --
  130.                             NUMBER   #IMPLIED -- Default: not known --
  131. >
  132.  
  133.                 <!-- Default Value List Attributes -->
  134. <!attlist all-dvl
  135.                    subdvl   -- Subelement impliable attribute value defaults --
  136.                             -- eltype(dvlist) --
  137.                             IDREFS   #IMPLIED -- Default: none --
  138.                    sibdvl   -- Sibling impliable attribute value defaults --
  139.                             -- eltype(dvlist) --
  140.                             IDREFS   #IMPLIED -- Default: none --
  141. >
  142.  
  143.                      <!-- Default Value List -->
  144. <!element dvlist   -- Default value list --
  145.                    -- Constraint: attribute specification list --
  146.                    - O      (#PCDATA) -- lextype(char*) -->
  147. <!attlist dvlist   HyTime   NAME     #FIXED dvlist
  148.                    id       ID       #REQUIRED
  149.                             -- dvlist attributes--
  150.                    dvgi     -- Default value element type --
  151.                             -- Applies to all elements if omitted --
  152.                             -- lextype(GI) --
  153.                             CDATA    "" -- Default: all elements --
  154.                    preatts  -- Attributes whose values are to be preempted --
  155.                             -- Constraint: must be in dvlist content --
  156.                             -- lextype(ATTNAME, (s+, ATTNAME)*) --
  157.                             CDATA    "" -- Default: none --
  158. >
  159.  
  160.                  <!-- Descriptive Text Attributes -->
  161. <!attlist all-desc
  162.                    desctxt  -- Descriptive text --
  163.                             -- If specified, its descdef in desctab is treated
  164.                                by HyTime as the content of the element. --
  165.                             -- lextype(tokl) --
  166.                             CDATA    #CONREF -- Default: none --
  167.                    desctab  -- Current description tables --
  168.                             -- Searched in order listed --
  169.                             -- eltype(desctab) --
  170.                             IDREFS   #IMPLIED
  171.                                      -- Default: all, in order of occurrence --
  172.                    descuse  -- Descriptive text usage --
  173.                             -- Choice: Use the element in the descriptive text
  174.                                definition as the content (DESCCONT) or use it
  175.                                as a substitute (DESCSUB) for this element. --
  176.                             (desccont|descsub) descsub
  177. >
  178.  
  179.                       <!-- Description Table -->
  180. <!element desctab  -- Descriptive text definition table --
  181.                    - O      (desctxt, descdef)+ >
  182. <!attlist desctab  HyTime   NAME     #FIXED desctab
  183.                    id       ID       #REQUIRED >
  184.  
  185.                       <!-- Descriptive Text -->
  186. <!element desctxt  -- Descriptive text --
  187.                    O O      (#PCDATA) -- lextype(tokl) -->
  188. <!attlist desctxt  HyTime   NAME     #FIXED desctxt >
  189.  
  190.                  <!-- Descriptive Text Definition -->
  191. <!element descdef  -- Descriptive text definition --
  192.                    O O      ANY >
  193. <!attlist descdef  HyTime   NAME     #FIXED descdef >
  194.  
  195.                   <!-- Activity Tracking Policy -->
  196. <!attlist all-act
  197.                    activity -- Activity tracking policy for this element --
  198.                             -- eltype(activity) --
  199.                             IDREF    #IMPLIED -- Default: none --
  200. >
  201. <!element activity -- Activity tracking policy --
  202.                    - O      (nHyTime?)>
  203. <!attlist activity HyTime   NAME     #FIXED activity
  204.                    id       ID       #REQUIRED
  205.                    created  -- Tracking policy when element created --
  206.                             -- eltype(nHyTime) --
  207.                             IDREF    #IMPLIED -- Default: none --
  208.                    modified -- Tracking policy when element modified --
  209.                             -- eltype(nHyTime) --
  210.                             IDREF    #IMPLIED -- Default: none --
  211.                    linked   -- Tracking policy when link to element is created --
  212.                             -- Requires hyperlinks module --
  213.                             -- eltype(nHyTime) --
  214.                             IDREF    #IMPLIED -- Default: none --
  215.                    accessed -- Tracking policy when element accessed --
  216.                             -- eltype(nHyTime) --
  217.                             IDREF    #IMPLIED -- Default: none --
  218.                    deleted  -- Tracking policy when element deleted --
  219.                             -- eltype(nHyTime) --
  220.                             IDREF    #IMPLIED -- Default: none --
  221. >
  222.  
  223.                          <!-- MEASUREMENT -->
  224.                     <!-- Dimension Specification -->
  225. <!element dimspec  -- Dimension specification --
  226.                    - O   (marker1?, marker2)>
  227. <!attlist dimspec  HyTime   NAME     #FIXED dimspec
  228.                    id       ID       #IMPLIED
  229.                             -- dimspec attributes --
  230.                    overrun  -- Handling of dimension that overruns range --
  231.                             (error|trunc) error
  232. >
  233.  
  234.                  <!-- First Marker Specification -->
  235. <!element marker1  -- 1st marker specification of a dimension specification --
  236.                    -- Resolves to signed non-zero integer that indicates
  237.                       direction of indexing:
  238.                       Positive: from start of range
  239.                       Negative: from end of range if marker2 is positive,
  240.                                 from marker2      if marker2 is negative --
  241.                    -- Constraint: calref permitted only in calendars --
  242.                    O O   (marker|dimref|markfun|calref) >
  243. <!attlist marker1  HyTime   NAME     #FIXED marker1 >
  244.  
  245.                  <!-- Second Marker Specification -->
  246. <!element marker2  -- 2nd marker specification of a dimension specification --
  247.                    -- Resolves to signed non-zero integer that indicates
  248.                       direction of indexing:
  249.                       Positive: from marker1
  250.                       Negative: from end of range --
  251.                    -- Constraint: calref permitted only in calendars --
  252.                    O O   (marker|dimref|markfun|calref) >
  253. <!attlist marker2  HyTime   NAME     #FIXED marker2 >
  254.  
  255.                          <!-- Axis Marker -->
  256. <!element marker   -- Axis marker --
  257.                    O O      (#PCDATA) -- lextype(snzi) -->
  258. <!attlist marker   HyTime   NAME     #FIXED marker >
  259.  
  260.                     <!-- Extent Specification -->
  261. <!attlist exspec
  262.                             -- exspec use: event proscope modscope --
  263.                    exspec   -- Extent specification --
  264.                             -- Constraint: one dimspec per axis --
  265.                             -- eltype(dimspec) --
  266.                             -- lextype(idrl) --
  267.                             CDATA    #REQUIRED
  268. >
  269.  
  270.                 <!-- Measurement Domain Definition -->
  271. <!element measure  -- Measurement domain: convertible granules --
  272.                    -- Defines granules in terms of a reference granule
  273.                       and ultimately a standard measurement unit (SMU) --
  274.                    -- Multiple definitions with same SMU comprise one domain --
  275.                    - O      (granule+) >
  276. <!attlist measure  HyTime   NAME     #FIXED measure
  277.                    id       ID       #IMPLIED
  278.                    smu      -- Standard measurement unit for domain --
  279.                             -- Constraint: notation name of an SMU.
  280.                                If virtual, it must have a formal public ID
  281.                                of "Virtual Measurement Unit" --
  282.                             NAME     #REQUIRED
  283. >
  284. <!element granule  -- Granule definition --
  285.                    - O      (nHyTime?) >
  286. <!attlist granule  HyTime   NAME     #FIXED granule
  287.                    gn       -- Granule name (case-sensitive) --
  288.                             -- Constraint: cannot be same as SMU name
  289.                                (with case ignored) --
  290.                             -- lextype(token) --
  291.                             CDATA    #REQUIRED
  292.                    gd       -- Granule definition expression --
  293.                             -- Constraint: ratio, and reference granule that
  294.                                ratio is multiplied by (or the SMU, for which
  295.                                case is ignored) --
  296.                             -- lextype(frac, s+, token) --
  297.                             CDATA    #REQUIRED
  298. >
  299.  
  300.                     <!-- Schedule Measurement -->
  301. <!attlist schdmeas
  302.                             -- schdmeas use:
  303.                                evsched baton wand evgrp event --
  304.                    basegran -- Base granule for each axis --
  305.                             -- lextype(tokl) --
  306.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  307.                    gran2hmu -- Granule to HMU ratio for each axis --
  308.                             -- lextype(fracs) --
  309.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  310.                    pls2gran -- Pulse to granule ratio for each axis --
  311.                             -- lextype(fracs) --
  312.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  313. >
  314.  
  315.                      <!-- Dimension Reference -->
  316. <!element dimref   -- Dimension reference --
  317.                    -- Constraint: semantic constraints on references
  318.                       across axes (for example, a calref is only
  319.                       permitted from the dimspec of a calendar event).
  320.                       Empty content permitted only in a derived extent
  321.                       specification, signifying dimension of projector scope. --
  322.                    -- reftype(dimspec|evsched|wand|baton|calref|
  323.                               axis|evgrp|event|modscope|proscope) --
  324.                    - O      (#PCDATA) -- lextype(IDREF)? -->
  325. <!attlist dimref   HyTime   NAME     #FIXED dimref
  326.                    id       ID       #IMPLIED
  327.                    -- dimref attributes --
  328.                    axisref  -- Axis referenced --
  329.                             -- Omit if referenced element is a dimspec
  330.                                or has only one axis --
  331.                             -- lextype(GI) --
  332.                             CDATA    "" -- Default: one axis --
  333.                    projectr -- Event projector --
  334.                             -- For reference to projected dimension of an
  335.                                event, the projector that created it --
  336.                             -- Constraint: must be in same baton as reference --
  337.                             -- eltype(projectr) --
  338.                             IDREF    #IMPLIED -- Default: not projected --
  339.                    selcomp  -- Selected component of dimension --
  340.                            (first|last|qcnt) qcnt
  341.                    flip     -- Last is normally counted from end of range
  342.                                (negative sign), and first from start of range
  343.                                (positive).  Qcnt is also normally positive.
  344.                                Flip counts last from start of range (making it
  345.                                positive), and first from end of range (making
  346.                                it negative). Flip also makes qcnt negative. --
  347.                             (flip|noflip) noflip
  348. >
  349.  
  350. <!element markfun  -- Marker function --
  351.                    -- Represents (i.e., function returns) an axis marker --
  352.                    - O      (nHyTime) >
  353. <!attlist markfun  HyTime   NAME     #FIXED markfun
  354.                    id       ID       #IMPLIED
  355.                             -- markfun attributes --
  356.                    notation -- Data content notation --
  357.                             NAME     #IMPLIED -- #FIXED recommended --
  358.                    mfn      -- Marker function name --
  359.                             NAME     #IMPLIED -- Default: none --
  360.                    usemfn   -- Mfn of another function to which to pass
  361.                                the args of this one --
  362.                             NAME     #CONREF -- Default: none --
  363.                    args     -- Argument string passed to the function
  364.                                (if supported by function language) --
  365.                             -- lextype(char*) --
  366.                             CDATA    "" -- Default: none --
  367. >
  368.  
  369.         <!-- Document Dimension and Measurement Attributes -->
  370. <!attlist docdim
  371.                             -- docdim use: doc --
  372.                    hyqcnt   -- Highest allowable quantum count in document --
  373.                             -- Constraint: specified as the power of 2 whose
  374.                                value is 1 greater than the desired value;
  375.                                power must be 32 or greater. --
  376.                             NUMBER   #FIXED 32 -- Default: 4,294,967,295 --
  377.                    docmdu   -- SMU to MDU ratio that makes the MDU the least
  378.                                common denominator of HMUs for all schedules in
  379.                                all FCS that are in a given measurement domain.--
  380.                             -- Constraint: SMU name and ratio for one or
  381.                                more of the domains used in the document. --
  382.                             -- lextype((NAME,s+,frac),(s+,NAME,s+,frac)*) --
  383.                             CDATA    #FIXED "" -- Default: set by FCS or axis --
  384. >
  385.  
  386.  
  387.                       <!-- LOCATION ADDRESS -->
  388.                    <!-- External ID References -->
  389. <!attlist all-xidr
  390.                    exidrefs -- IDREFs that need not resolve in document --
  391.                             -- lextype((rni,"ALL") |
  392.                                 (((rni,"CONTENT")|ATTNAME), (s+, ATTNAME)*)) --
  393.                             CDATA    "" -- Default: all must be in document --
  394. >
  395.  
  396.                        <!-- Location Source -->
  397. <!attlist locsrc
  398.                             -- locsrc use: coordloc strloc tokenloc
  399.                                treeloc pathloc attloc notloc fcsloc --
  400.                    locsrc   -- location source --
  401.                             -- reftype(#ALL) --
  402.                             -- lextype(idrl) --
  403.                             CDATA    "" --he moslt: previous specified --
  404.                    evalsrc  -- Evaluate source as address or use as location --
  405.                             (evalsrc|donteval) evalsrc
  406. >
  407.  
  408.                      <!-- Aggregate Locations -->
  409. <!attlist aggloc
  410.                             -- aggloc use: coordloc strloc tokenloc
  411.                                treeloc pathloc attloc notloc fcsloc
  412.                                linkend agglink spanlink --
  413.                    ordering -- Is ordering of locations significant? --
  414.                             (ordered|noorder) noorder
  415.                    maxlevel -- Level that IDREF resolution cannot exceed,
  416.                                relative to this aggloc.  Default: all levels --
  417.                             -- Resolution includes query evaluation --
  418.                             -- lextype(snzi) --
  419.                             NMTOKEN  "-1" -- Default: all levels --
  420.                    merged   -- Should levels (after resolution to maxlevel)
  421.                                be merged into one level, or stay nested? --
  422.                             (merged|nested) nested
  423.                    aggsrc   -- Aggregate source: aggregate or members --
  424.                             (agg|members) members
  425. >
  426.  
  427.                <!-- Bibliographic Location Address -->
  428. <!element bibloc   -- Textual bibliographic reference to real object --
  429.                    -- Application can define content model as needed --
  430.                    - O      (nHyTime) >
  431. <!attlist bibloc   HyTime   NAME     #FIXED bibloc
  432.                    id       ID       #REQUIRED
  433. >
  434.  
  435.                    <!-- Named Location Address -->
  436. <!element nameloc  -- Assigns a local ID to one or more entities or elements --
  437.                    -- If more than one, this element is an aggloc --
  438.                    - O      (namelist|nmquery)+ >
  439. <!attlist nameloc  HyTime   NAME     #FIXED nameloc
  440.                    id       ID       #REQUIRED
  441.                             -- nameloc attributes --
  442.                    namesrc  -- Concatenated name lists (if not in content) --
  443.                             -- reftype(namelist|nmquery)+ --
  444.                             IDREFS   #CONREF
  445.                    nametype -- Entity names or IDs of elements --
  446.                             (entity|element) #REQUIRED
  447.                    docent   -- SGML document entity whose prolog declares
  448.                                entities or elements named in name list --
  449.                             -- reftype(nHyTime) --
  450.                             -- lextype(idrl) --
  451.                             CDATA    "" -- Default: this document --
  452.                    dtdorlpd -- Active DTD/LPD for SGML document entity --
  453.                             NAME     #IMPLIED -- Default: this DTD --
  454.                             -- aggloc attributes -->
  455.  
  456.                    <!-- Name List Specification -->
  457. <!element namelist -- List of local or external IDs, or entities --
  458.                    -- Content is parsed like attribute value specification
  459.                       for a name list value in docent concrete syntax
  460.                       except there is no limit on number of names in list --
  461.                    - O      (#PCDATA) -- lextype(char*) -->
  462. <!attlist namelist HyTime   NAME     #FIXED namelist >
  463.  
  464.                        <!-- Name List Query -->
  465. <!element nmquery  -- Query language expression that returns a name list --
  466.                    -- Selects elements or entities by semantic properties --
  467.                    -- Examples: SGML/Search, DSSSL location model --
  468.                    O O      (nHyTime) >
  469. <!attlist nmquery  HyTime   NAME     #FIXED nmquery >
  470.  
  471.                  <!-- Coordinate Location Address -->
  472. <!element coordloc -- Locates quanta on one or more coordinate axes --
  473.                    - O      (dimspec|pattern)+ >
  474. <!attlist coordloc HyTime   NAME     #FIXED coordloc
  475.                    id       ID       #REQUIRED
  476.                             -- locsrc attributes --
  477.                             -- aggloc attributes -->
  478.  
  479.                  <!-- Pattern Matching Expression -->
  480. <!element pattern  -- Pattern matching expression --
  481.                    -- Constraint: represents dimspec+ --
  482.                    -- Compares representation of ordered data to pattern (in a
  483.                       notation such as HyLex, Unix grep, C scanf, REXX parse)
  484.                       and returns dimspecs locating instances of pattern --
  485.                    O O  (lexmodel) >
  486. <!attlist pattern  HyTime   NAME     #FIXED pattern >
  487.  
  488.                    <!-- String Location Address -->
  489. <!element strloc   -- Locates string of bit combinations --
  490.                    - O      (dimspec|pattern)+ >
  491. <!attlist strloc   HyTime   NAME     #FIXED strloc
  492.                    id       ID       #REQUIRED
  493.                             -- locsrc attributes --
  494.                             -- aggloc attributes -->
  495.  
  496.                  <!-- Token List Location Address -->
  497. <!element tokenloc -- Locates tokens in a token list --
  498.                    - O      (dimspec|pattern)+ >
  499. <!attlist tokenloc HyTime   NAME     #FIXED tokenloc
  500.                    id       ID       #REQUIRED
  501.                             -- locsrc attributes --
  502.                             -- aggloc attributes -->
  503.  
  504.                     <!-- Tree Location Address -->
  505. <!element treeloc  -- Locates nodes in a tree --
  506.                    - O      (dimspec|pattern)+ >
  507. <!attlist treeloc  HyTime   NAME     #FIXED treeloc
  508.                    id       ID       #REQUIRED
  509.                             -- locsrc attributes --
  510.                             -- aggloc attributes -->
  511.  
  512.                     <!-- Path Location Address -->
  513. <!element pathloc  -- Locates nodes in a tree viewed as a path list --
  514.                    -- Constraint: must resolve to pairs of marker pairs --
  515.                    - O      (dimspec|pattern)+ >
  516. <!attlist pathloc  HyTime   NAME     #FIXED pathloc
  517.                    id       ID       #REQUIRED
  518.                             -- locsrc attributes --
  519.                             -- aggloc attributes -->
  520.  
  521.                       <!-- Semantic Locations -->
  522.                  <!-- Attribute Location Address -->
  523. <!element attloc   -- Locates attribute or object class ID --
  524.                    - O      (nHyTime)>
  525. <!attlist attloc   HyTime   NAME     #FIXED attloc
  526.                    id       ID       #REQUIRED
  527.                             -- attloc attributes --
  528.                    attlist  -- Attribute list type --
  529.                             -- For SGML: data|starttag|link|result --
  530.                             NAME     #IMPLIED -- Default: starttag --
  531.                    attname  -- Attribute name --
  532.                             NAME     #IMPLIED -- Default: object class ID --
  533.                             -- locsrc attributes --
  534.                             -- aggloc attributes -->
  535.  
  536.                     <!-- Notation-specific Location Address -->
  537. <!element notloc   -- Locates an arbitrary portion of data in terms of its
  538.                       data content notation (e.g., internal label,
  539.                       3rd polygon in CGM) --
  540.                    - O      (nHyTime) >
  541. <!attlist notloc   HyTime   NAME     #FIXED notloc
  542.                    id       ID       #REQUIRED
  543.                             -- notloc attributes --
  544.                    prolog   -- Semantic and parsing context for locsrc --
  545.                             -- reftype(nHyTime) --
  546.                             -- lextype(idrl) --
  547.                             CDATA    "" -- Default: locsrc --
  548.                             -- locsrc attributes --
  549.                             -- aggloc attributes -->
  550.  
  551.  
  552.                          <!-- HYPERLINKS -->
  553.                       <!-- Independent Link -->
  554. <!element ilink    -- Independent link --
  555.                    - O      (nHyTime?) >
  556. <!attlist ilink    HyTime   NAME     #FIXED ilink
  557.                             -- ilink attributes --
  558.                    endtypes -- Element types of link ends --
  559.                             -- lextype(gil) --
  560.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  561.                    linkends -- Link ends --
  562.                             -- In order corresponding to endtypes --
  563.                             -- eltype(linkend) --
  564.                             IDREFS   #REQUIRED
  565. >
  566. <!element linkend  -- Link end definition --
  567.                    -- Content is anchor location: if empty, link element
  568.                       content is anchor; if IDREFs, anchor is aggloc --
  569.                    -- reftype (#ANY) --
  570.                    - O      (#PCDATA) -- lextype(idrl) -->
  571. <!attlist linkend  HyTime   NAME     #FIXED linkend
  572.                    id       ID       #REQUIRED
  573.                             -- linkend attributes --
  574.                    traverse -- begin(B), return(R), both(BR) --
  575.                             (b|r|br) br
  576.                    aggacc   -- Aggloc access: direct(D), indirect(I)
  577.                                               cannot be an aggregate(N) --
  578.                             (d|i|n)  n
  579.                    endterm  -- Link end term information --
  580.                             -- reftype (#ANY) --
  581.                             IDREF    #IMPLIED -- Default: use anchor --
  582.                             -- aggloc attributes --
  583. >
  584.  
  585.                        <!-- Contextual Link -->
  586. <!element clink    -- Contextual link --
  587.                    -- Constraint: content must be valid in the context
  588.                       in which the contextual link element occurs --
  589.                    - O      ANY >
  590. <!attlist clink    HyTime   NAME     #FIXED clink
  591.                             -- clink attributes --
  592.                    refsub   -- Endtype of subject to which reference refers --
  593.                             -- Constraint: traverse must be #FIXED R or BR --
  594.                             -- lextype(GI) --
  595.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  596.                    linkends -- Link ends --
  597.                             -- Constraint: (refsub) --
  598.                             -- eltype(linkend) --
  599.                             IDREF    #REQUIRED
  600. >
  601.  
  602.                    <!-- Aggregate Location Link -->
  603. <!element agglink  -- Aggregate location link --
  604.                    -- Links a list of locations into an aggloc --
  605.                    -- reftype (linkend) --
  606.                    - O      (#PCDATA) -- lextype(idrl) -->
  607. <!attlist agglink  HyTime   NAME     #FIXED agglink
  608.                    id       ID       #REQUIRED
  609.                             -- aggloc attributes --
  610. >
  611.  
  612.                      <!-- Span Location Link -->
  613. <!element spanlink -- Span location link --
  614.                    -- A span between a pair of PARSED locations in an SGML
  615.                       document (except within attribute values) --
  616.                    -- If more than one pair, this element is equivalent
  617.                       to an aggloc whose members are all spanlocs --
  618.                    - O      (nHyTime?) >
  619. <!attlist spanlink HyTime   NAME     #FIXED spanlink
  620.                    id       ID       #REQUIRED
  621.                             -- spanlink attributes --
  622.                    spanstrt -- Endtype of span start link end --
  623.                             -- lextype(GI) --
  624.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  625.                    spanend  -- Endtype of span end link end --
  626.                             -- lextype(GI) --
  627.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  628.                    linkends -- Link ends --
  629.                             -- Constraint: (spanstrt, spanend) --
  630.                             -- eltype(linkend) --
  631.                             IDREFS   #REQUIRED
  632. >
  633.  
  634.                    <!-- FINITE COORDINATE SPACE -->
  635. <!element fcs      -- Finite coordinate space --
  636.                    - O      (evsched|wand|baton)+ >
  637. <!attlist fcs      HyTime   NAME     #FIXED fcs
  638.                    id       ID       #IMPLIED
  639.                             -- fcs attributes --
  640.                    fcsmdu   -- SMU to MDU ratio that makes the MDU the least
  641.                                common denominator of HMUs for all schedules on
  642.                                all axes of FCS in a given measurement domain.--
  643.                             -- Constraint: SMU name and ratio for one or
  644.                                more of the domains used in the FCS. --
  645.                             -- lextype((NAME,s+,frac),(s+,NAME,s+,frac)*) --
  646.                             CDATA    #FIXED "" -- Default: equal to docmdu --
  647.                    axisdefs -- Definitions of FCS axes --
  648.                             -- lextype(gil) --
  649.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  650. >
  651.                        <!-- Axis Definition -->
  652. <!element axis     -- Axis definition for a finite coordinate space --
  653.                    -- It extends the FCS definition; there is one instance,
  654.                       for use in referencing. --
  655.                    - O      EMPTY >
  656. <!attlist axis     HyTime   NAME     #FIXED axis
  657.                             -- axis attributes --
  658.                    axismeas -- Measurement domain (SMU) of this axis --
  659.                             -- lextype(token) --
  660.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  661.                    axismdu  -- SMU to MDU ratio that makes the MDU the least
  662.                                common denominator of HMUs for all schedules on
  663.                                this axis in all FCS elements that use it.--
  664.                             -- lextype(frac) --
  665.                             CDATA    #FIXED "" -- Default: equal to fcsmdu --
  666.                    axisdim  -- Dimension of this axis in MDUs --
  667.                             -- lextype(NUMBER) --
  668.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  669.                    calendar -- Synchronizes axis to absolute date and time by
  670.                                specifying date/time of first quantum --
  671.                             -- Constraint: only if axismeas is SIsecond;
  672.                                empty string if not a calendar.  Omission of date
  673.                                component means 1, of time component means 0.
  674.                                (Time is expressed in elapsed quanta.)
  675.                                Julian and UTC dates cannot be mixed. --
  676.                             -- eltype(calref) --
  677.                             -- lextype(IDREF) --
  678.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  679. >
  680.  
  681.                           <!-- Schedule -->
  682. <!attlist sched
  683.                             -- sched use: evsched baton wand --
  684.                    axisord  -- Order of axes in schedule --
  685.                             -- lextype(gil) --
  686.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  687.                    sorted   -- Representation of schedule elements is sorted
  688.                                by order of position on first axis of schedule --
  689.                             -- lextype("sorted"|"unsorted") --
  690.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  691.                    apporder -- Order of schedule elements is significant to
  692.                                the application and must be preserved --
  693.                             -- lextype("order"|"disorder") --
  694.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  695. >
  696.  
  697.                        <!-- Event Schedule -->
  698. <!element evsched  -- Event schedule --
  699.                    - O      (evgrp|event|clink)* >
  700. <!attlist evsched  HyTime   NAME     #FIXED evsched
  701.                    id       ID       #IMPLIED
  702.                             -- sched attributes --
  703.                             -- schdmeas attributes --
  704. >
  705.  
  706.                          <!-- Event Group -->
  707. <!element evgrp    -- Event group --
  708.                    - O      (evgrp|event|clink)+ >
  709. <!attlist evgrp    HyTime   NAME     #FIXED evgrp
  710.                    id       ID       #IMPLIED
  711.                             -- evgrp attributes --
  712.                    grpscope -- Group scope (extent of group) --
  713.                             -- For each axis, the dimension is the lowest first
  714.                                quantum of any group member through the highest
  715.                                last quantum of any group member on that axis --
  716.                             -- Optional: can be calculated --
  717.                             -- Constraint: one dimspec per axis --
  718.                             -- eltype(dimspec) --
  719.                             -- lextype(idrl) --
  720.                             CDATA    #IMPLIED -- Default: to be calculated --
  721.                    grpdex   -- Group derived extent specification --
  722.                             -- Use for resizing, rearrangement, repetition.
  723.                                Group members are replaced with derived ones --
  724.                             -- Derived extents use same schdmeas as group --
  725.                             -- eltype(dexspec) --
  726.                             IDREF    #IMPLIED -- Default: no derivation --
  727.                             -- schdmeas attributes --
  728. >
  729.  
  730.                 <!-- Derived Extent Specification -->
  731. <!element dexspec  -- Derived extent specification --
  732.                    -- Defines 1 or more derived extents for events in its scope;
  733.                       "scope" is extent of proscope, modscope, or evgrp --
  734.                    -- Constraint: number of dimspecs = number of derived extents
  735.                       * number of axes in derived extent --
  736.                    O O      (dimspec+) >
  737. <!attlist dexspec  HyTime   NAME     #FIXED dexspec >
  738.  
  739.                             <!-- Event -->
  740. <!element event    -- Event --
  741.                    -- Object could include loc addresses to identify portions --
  742.                    - O      (%object;|%loc;)>
  743. <!attlist event    HyTime   NAME     #FIXED event
  744.                    id       ID       #IMPLIED
  745.                             -- event attributes --
  746.                    exrecon  -- Extent reconciliation rule if object won't fit --
  747.                             -- eltype(exrecon) --
  748.                             IDREF    #IMPLIED -- Default: none --
  749.                             -- exspec attributes --
  750.                             -- schdmeas attributes --
  751. >
  752.  
  753.                       <!-- Malleable Objects -->
  754. <!element pause    -- Imperceivable object: silent and blank --
  755.                    - O      (nHyTime?)>
  756. <!attlist pause    HyTime   NAME     #FIXED pause
  757.                    id       ID       #REQUIRED >
  758. <!element hold     -- Holdover object: continues last perception --
  759.                    -- If object is object of event (rather than filler),
  760.                       holds the previous object in the schedule --
  761.                    - O      (nHyTime?)>
  762. <!attlist hold     HyTime   NAME     #FIXED hold
  763.                    id       ID       #REQUIRED >
  764. <!element wallpapr -- Continuous perceivable object --
  765.                    - O      (nHyTime)>
  766. <!attlist wallpapr HyTime   NAME     #FIXED wallpapr
  767.                    id       ID       #REQUIRED >
  768.  
  769.                     <!-- Accessed Anchor List -->
  770. <!element accanch  -- Accessed anchor list --
  771.                    -- Constraint: if empty, all anchors and link end terms of
  772.                       all links, when accessed, are the object of this event if
  773.                       they are not included in another accessed anchor list. --
  774.                    - O      (acctype|acclink)* >
  775. <!attlist accanch  HyTime   NAME     #FIXED accanch
  776.                    id       ID       #REQUIRED
  777. >
  778. <!attlist accend
  779.                             -- accend use: acctype acclink --
  780.                    accend   -- For accessed link end, show ENDTERM or ANCHOR? --
  781.                             (endterm|anchor) anchor
  782. >
  783. <!element acctype  -- Accessed link element type --
  784.                    -- Constraint: GI of link element type and zero or more of
  785.                       its link end types (zero means all link end types). --
  786.                    - O      (#PCDATA) -- lextype(GI, (s+, GI)*) -->
  787. <!attlist acctype  HyTime   NAME     #FIXED acctype
  788.                             -- accend attributes --
  789. >
  790. <!element acclink  -- Accessed link element --
  791.                    -- Constraint: ID of link element and zero or more of its
  792.                       link ends (zero means all link ends). --
  793.                    -- eltype((ilink|clink|agglink|spanlink), linkend) --
  794.                    - O      (#PCDATA) -- lextype(IDREF, (s+, IDREF)*) -->
  795. <!attlist acclink  HyTime   NAME     #FIXED acclink
  796.                             -- accend attributes --
  797. >
  798.  
  799.                <!-- Extent Reconciliation Strategy -->
  800. <!element exrecon  -- Reconciliation strategy if object won't fit extent --
  801.                    - O      (nHyTime?) >
  802. <!attlist exrecon  HyTime   NAME     #FIXED exrecon
  803.                    id       ID       #REQUIRED
  804.                    altrecon -- Alternative reconciliation strategy to try
  805.                                for least objectionable fit --
  806.                             -- eltype(exrecon) --
  807.                             IDREF    #IMPLIED -- Default: no more to try --
  808.                    altcrit  -- Criteria for deciding whether to use altrecon --
  809.                             -- eltype(nHyTime) --
  810.                             IDREF    #IMPLIED -- Default: none --
  811.                    replace  -- Replacement object (e.g., malleable or error) --
  812.                             -- Normally omitted for 1st exrecon in chain --
  813.                             -- eltype(#ANY) --
  814.                             IDREF    #IMPLIED -- Default: don't replace --
  815.                    align    -- Align object (before vamping) with event --
  816.                             -- Constraint: one F|C|L or snum for each axis --
  817.                             -- lextype(("F"|"C"|"L")+|(snum+, char+)) --
  818.                             CDATA    "" -- Default: C for each axis --
  819.                    vamp     -- Repeat undersize object in specified axis
  820.                                and optionally crop the excess. --
  821.                             -- VAMPCROP repeats 0 or more times until it
  822.                                overshoots, then crops the excess. --
  823.                             -- VAMPFILL repeats 0 or more times until it
  824.                                can go no further without overshooting, then
  825.                                fills the excess with filler. --
  826.                             -- NOVAMP doesn't repeat object but fills on
  827.                                undershot axes and crops on overshot axes. --
  828.                             -- Constraint: one keyword per axis --
  829.                             -- lextype((vampcrop|vampfill|novamp),
  830.                                   (s+, (vampcrop|vampfill|novamp))*) --
  831.                             -- lextype(NAMES) --
  832.                             CDATA    "" -- Default: novamp for each axis --
  833.                    filler   -- Malleable object to fill excess extent --
  834.                             -- eltype(hold|pause|wallpapr) --
  835.                             IDREF    pause
  836. >
  837.  
  838.               <!-- Finite Coordinate Space Location -->
  839. <!element fcsloc   -- Imposes a HyTime FCS onto data so that a location
  840.                       within it can be defined by a HyTime extent --
  841.                    - O      (dimspec+) --in impfcs order in FCS-units-->
  842. <!attlist fcsloc   HyTime   NAME     #FIXED fcsloc
  843.                    id       ID       #REQUIRED
  844.                             -- fcsloc attributes --
  845.                    impfcs   -- Finite coordinate space imposed on this data --
  846.                             -- eltype(fcs) --
  847.                             IDREF    #REQUIRED
  848.                             -- locsrc attributes --
  849.                             -- aggloc attributes -->
  850.  
  851.                      <!-- Calendar Reference -->
  852. <!element calref   -- Calendar reference --
  853.                    -- Constraint: date is valid date in year/month/day
  854.                       format, Julian date is signed number, time is valid 24-hr
  855.                       time in hour:minute:second.decimal format, except
  856.                       that components can be omitted. --
  857.                    -- Omitted components are those of previous specified
  858.                       event on this axis (first quantum if none previous). --
  859.                    - O      (#PCDATA) -- lextype((date|juldate),s+,timeoday) -->
  860. <!attlist calref   HyTime   NAME     #FIXED calref
  861.                    id       ID       #IMPLIED
  862.                    -- calref attributes --
  863.                    timezone -- Offset from GMT --
  864.                             -- Constraint: valid time zone offset in hour,
  865.                                minute format; if DST specified, hour is
  866.                                incremented by 1 --
  867.                             -- lextype(snzi,(".",nzi)?, (s+, "DST")?) --
  868.                             CDATA    "" -- Default: local time --
  869.                    era      -- Era: previous (BC/BCE/BP) or current (AD/CE) --
  870.                             -- Constraint: not specified for juldate --
  871.                             -- lextype("BC"|"BCE"|"BP"|"AD"|"CE") --
  872.                             CDATA    "" -- Default: last specified --
  873. >
  874.  
  875.  
  876.                           <!-- RENDITION -->
  877.                      <!-- Object Modification -->
  878.                             <!-- Wand -->
  879. <!element wand     -- Wand --
  880.                    - O      (modscope+)>
  881. <!attlist wand     HyTime   NAME     #FIXED wand
  882.                    id       ID       #REQUIRED
  883.                             -- sched attributes --
  884.                             -- schdmeas attributes --
  885. >
  886.                       <!-- Modification Rule -->
  887. <!element modrule  -- Modification rule --
  888.                    -- Constraint: an event schedule and any wands that affect it
  889.                       must be aligned (that is, have the same axisords). --
  890.                    -- reftype((evsched, (wand|wndpatch)) |
  891.                         ((event|evgrp), (nHyTime|modpatch)) --
  892.                    - O      (#PCDATA) -- lextype(idr2l) -->
  893. <!attlist modrule  HyTime   NAME     #FIXED modrule
  894.                    id       ID       #REQUIRED
  895. >
  896.  
  897.                        <!-- Modifier Scope -->
  898. <!element modscope -- Modifier scope --
  899.                    - O      (nHyTime)>
  900. <!attlist modscope HyTime   NAME     #FIXED modscope
  901.                    id       ID       #IMPLIED
  902.                             -- exspec attributes --
  903. >
  904.  
  905.                            <!-- Patches -->
  906. <!element wndpatch -- Wand patch --
  907.                    -- Constraint: subset of SGML model group with IDREFs as
  908.                       names and no occurrence indicators or OR connectors. --
  909.                    -- reftype(wndpatch|wand) --
  910.                    - O      (#PCDATA) -- lextype(char*) -->
  911. <!attlist wndpatch HyTime   NAME     #FIXED wndpatch
  912.                    id       ID       #REQUIRED >
  913. <!element modpatch -- Modifier patch --
  914.                    -- Constraint: subset of SGML model group with IDREFs as
  915.                       names and no occurrence indicators or OR connectors. --
  916.                    -- reftype(modpatch|nHyTime) --
  917.                    - O      (#PCDATA) -- lextype(char*) -->
  918. <!attlist modpatch HyTime   NAME     #FIXED modpatch
  919.                    id       ID       #REQUIRED >
  920.  
  921.  
  922.                       <!-- Event Projection -->
  923.                             <!-- Baton -->
  924. <!element baton    -- Schedule of schedule projectors --
  925.                    - O      (proscope+) >
  926. <!attlist baton    HyTime   NAME     #FIXED baton
  927.                    id       ID       #REQUIRED
  928.                             -- baton attributes --
  929.                    pevsched -- Projected event schedule --
  930.                             -- Constraint: must be different FCS from baton --
  931.                             -- eltype(evsched) --
  932.                             IDREF    #REQUIRED
  933.                             -- sched attributes --
  934.                             -- schdmeas attributes --
  935. >
  936.                        <!-- Projection Rule -->
  937. <!element prorule  -- Projection rule --
  938.                    -- Constraint: pairs identify original event schedule and
  939.                       baton, which must be aligned (have the same axisords). --
  940.                    -- reftype(evsched, baton) --
  941.                    - O      (#PCDATA) -- lextype(idr2l) -->
  942. <!attlist prorule  HyTime   NAME     #FIXED prorule
  943.                    id       ID       #REQUIRED >
  944.  
  945.                        <!-- Projector Scope -->
  946. <!element proscope -- Projector scope --
  947.                    -- Defines the scope of an event projector
  948.                       as an extent of the unprojected schedule --
  949.                    - O      (projectr) >
  950. <!attlist proscope HyTime   NAME     #FIXED proscope
  951.                    id       ID       #IMPLIED
  952.                             -- exspec attributes --
  953. >
  954.  
  955.                        <!-- Event Projector -->
  956. <!element projectr -- Event projector --
  957.                    -- Defines extent in the projected schedule into which
  958.                       events within the projector scope will be projected --
  959.                    - O      (dexspec|profun|scaleref) >
  960. <!attlist projectr HyTime   NAME     #FIXED projectr
  961.                             -- projectr attributes --
  962.                    strict   -- Strictness of interpretation: e.g., rubato --
  963.                             -- lextype(tokl) --
  964.                             CDATA    "" -- Default: last specified -->
  965.  
  966.                      <!-- Projection Function -->
  967. <!element profun   -- Projection function --
  968.                    -- Application attributes can serve as parameters.
  969.                       They can identify elements that return variables set
  970.                       during rendition, thereby allowing one baton to affect
  971.                       the behavior of another (batons controlling batons). --
  972.                    - O      (nHyTime)>
  973. <!attlist profun   HyTime   NAME     #FIXED profun >
  974.  
  975.                       <!-- Scaling Reference -->
  976. <!element scaleref -- Scaling reference --
  977.                    -- Instantaneous scaling applicable to a specified quantum in
  978.                       each axis of an aligned original or projected schedule --
  979.                    -- Constraint: one dimref per axis of baton --
  980.                    - O      (dimref+) >
  981. <!attlist scaleref HyTime   NAME     #FIXED scaleref >
  982.  
  983.  
  984.                  <!-- End of Architectural Forms -->
  985.  
  986.                     <!-- HyTime Lexical Model -->
  987. <!NOTATION HyLex   PUBLIC
  988.            "+//ISO/IEC 10744//NOTATION HyTime Lexical Model Notation//EN" >
  989. <!ELEMENT HyLex    -- HyTime lexical model --
  990.                    -- Constraint: SGML model group with literals and no
  991.                       AND connector.  Names are ltn attribute values. --
  992.                    - O   CDATA -- lextype(char*) -->
  993. <!ATTLIST HyLex    HyTime   NAME     #FIXED lexmodel
  994.                             -- lexmodel attributes --
  995.                    ltn      -- Lexical type name --
  996.                             NAME     #REQUIRED
  997.                    notation -- Data content notation --
  998.                             NAME     #FIXED HyLex
  999. >
  1000.  
  1001.            <!-- HyTime Single Operator Marker Function -->
  1002. <!ELEMENT HyOp     -- HyTime single operator marker function --
  1003.                    -- Represents (i.e., function returns) an axis marker --
  1004.                    -- For use when HyFunk is not available --
  1005.                    - O   (marker|dimref|markfun)* -- Content is "meta" -->
  1006. <!ATTLIST HyOp     HyTime   NAME     #FIXED markfun
  1007.                    id       ID       #IMPLIED
  1008.                             -- HyOp attributes --
  1009.                    opname   -- Operator name (same as HyFunk) --
  1010.               (sum|subt|mult|div|avg|max|min|abs|nabs|incr|decr|rand|mod)
  1011.                                      #REQUIRED
  1012. >
  1013.  
  1014.                     <!-- HyTime Function Language -->
  1015. <!NOTATION HyFunk  PUBLIC
  1016.            "+//ISO/IEC 10744//NOTATION HyTime Function Language//EN" >
  1017. <!ELEMENT HyFunk   -- HyTime function language expression --
  1018.                    - O   CDATA -- lextype(char*) -->
  1019. <!ATTLIST HyFunk   HyTime   NAME     #FIXED markfun
  1020.                             -- markfun attributes --
  1021.                    notation -- Data content notation --
  1022.                             NAME     #FIXED HyFunk
  1023.                    mfn      -- Marker function name --
  1024.                             NAME     #IMPLIED
  1025.                    usemfn   -- Mfn of another function to which to pass
  1026.                                the args of this one --
  1027.                             NAME     #CONREF
  1028.                    args     -- Argument string passed to the function --
  1029.                             -- Constraint: 1-999 tokens, each being a snzi
  1030.                                or an IDREF that ultimately locates a snzi --
  1031.                             -- reftype(#ANY) --
  1032.                             -- lextype((snzi|IDREF), (s+, (snzi|IDREF))*) --
  1033.                             CDATA    #IMPLIED
  1034. >
  1035.  
  1036. <!--
  1037. HyFunk is a trivial function language intended for simple arithmetic
  1038. on axis markers; that is, non-zero integers within a finite range.
  1039. The following table shows the syntax of the HyFunk language, defined
  1040. using the HyLex notation.
  1041.  
  1042. <hylex ltn=HyFunk>   (fun)                                     </hylex>
  1043. <hylex ltn=fun>      (startfun, s*, funbody*, s*, endfun)      </hylex>
  1044. <hylex ltn=startfun> ((mfn|("@",operator)), s*, "(")           </hylex>
  1045. <hylex ltn=funbody>  ((operand, (s+, operand)*))               </hylex>
  1046. <hylex ltn=endfun>   (")")                                     </hylex>
  1047. <hylex ltn=operand>  (fun|dimref|ddimref|snzi|arg)             </hylex>
  1048. <hylex ltn=dimref>   ("@",dimop,s*,"(",s*, refbody, s*,")")    </hylex>
  1049. <hylex ltn=refbody>  ((IDREF|(rni,"SCOPE")), s*, GI?)          </hylex>
  1050. <hylex ltn=ddimref>  ("@",ddimop,s*,"(",s*, drefbody, s*,")")  </hylex>
  1051. <hylex ltn=drefbody> (IDREF, s+, IDREF, s*, GI?)               </hylex>
  1052. <hylex ltn=mfn>      (NAME)                                    </hylex>
  1053. <hylex ltn=dimop>    (NAME)                                    </hylex>
  1054. <hylex ltn=operator> (NAME)                                    </hylex>
  1055. <hylex ltn=snzi>     (("+"|"-")?,unzi)                         </hylex>
  1056. <hylex ltn=arg>      ("%",nzdigit,((Digit, Digit?)?)           </hylex>
  1057. <hylex ltn=nzdigit>  ("1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9")     </hylex>
  1058. <hylex ltn=unzi>      (nzdigit,Digit*)                         </hylex>
  1059.  
  1060. where:
  1061.  
  1062. mfn      is a marker function name from a HyFunk element.
  1063. dimop    is a dimension reference function named:
  1064.             first    for a reference to the first quantum
  1065.             last     for a reference to the last quantum
  1066.             qcnt     for a reference to the quantum count
  1067.             flfirst  for a reference to the first quantum with flip
  1068.             fllast   for a reference to the last quantum with flip
  1069.             flqcnt   for a reference to the quantum count with flip
  1070.          Its operands are:
  1071.             IDREF    is the first operand, identifying an element with a
  1072.                      dimension, or a dimref element.
  1073.             #SCOPE   is an alternative first operand, permitted in a derived
  1074.                      extent specification, identifying the derivation's scope.
  1075.             GI       is the optional second operand, naming the axis of
  1076.                      the identified element's extent, if it has more than one.
  1077. ddimop   is a derived dimension reference function named:
  1078.             dfirst   for a reference to the derived first quantum
  1079.             dlast    for a reference to the derived last quantum
  1080.             dqcnt    for a reference to the derived quantum count
  1081.             dflfirst for a reference to the derived first quantum with flip
  1082.             dfllast  for a reference to the derived last quantum with flip
  1083.             dflqcnt  for a reference to the derived quantum count with flip
  1084.          Its operands are:
  1085.             IDREF    is the first operand, identifying an unprojected event.
  1086.             IDREF    is the second operand, identifying an event schedule
  1087.                      projector or event group.
  1088.             GI       is the optional third operand, naming the axis of the
  1089.                      event's derived extent, if it has more than one.
  1090. arg      is a placeholder (%1-%999) that is replaced by a snzi
  1091.          specified directly or via an IDREF on the "ARGS" attribute of the
  1092.          HyFunk element containing the function.  If not specified, it is empty.
  1093. operator is a HyFunk operator.
  1094.  
  1095. The following table shows each HyFunk operator name, the number of
  1096. operands in its function body, and the value it returns.
  1097.  
  1098. NAME  FUNCTION BODY      RETURNED VALUE
  1099.  
  1100. avg  (operand+)          Average of all operands (rounded).
  1101. decr (operand)           Operand decremented by 1.
  1102. div  (operand, operand)  First operand divided by second operand (truncated).
  1103. incr (operand)           Operand incremented by 1.
  1104. max  (operand+)          Highest operand.
  1105. min  (operand+)          Lowest operand.
  1106. mod  (operand, operand)  Remainder of first operand divided by second operand.
  1107. mult (operand, operand+) Product of all operands multiplied together.
  1108. abs  (operand)           Absolute value of operand.
  1109. nabs (operand)           Negated absolute value of operand.
  1110. rand ()                  Pseudo-random value from 1 through hyqcnt.
  1111. subt (operand, operand)  Second operand subtracted from first.
  1112. sum  (operand, operand+) Sum of all operands.
  1113. -->
  1114.  
  1115.                       <!-- Measurement Units -->
  1116. <!NOTATION gquantum PUBLIC  -- Generic Quantum --
  1117.            "+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//XX" >
  1118. <!NOTATION SIsecond PUBLIC  -- Time --
  1119.            "+//ISO/IEC 10744//NOTATION Systeme International second//XX" >
  1120. <!NOTATION SImeter  PUBLIC  -- Length --
  1121.            "+//ISO/IEC 10744//NOTATION Systeme International meter//XX" >
  1122. <!NOTATION virtime  PUBLIC  -- Virtual Time Unit --
  1123.            "+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//XX" >
  1124. <!NOTATION virspace PUBLIC  -- Virtual Space Unit --
  1125.            "+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//XX" >
  1126.  
  1127. ]>
  1128. <doc>
  1129.  
  1130.                     <!-- Some Useful Instances -->
  1131.  
  1132. <!-- The following "HyLex" elements comprise the public text identified as:
  1133.      "ISO/IEC 10744:1991::DIS//TEXT Useful HyLex Lexical Types//EN"
  1134. -->
  1135.  
  1136.                     <!-- Useful Lexical Types -->
  1137. <hylex ltn=idrl> (IDREF, (s+, IDREF)*) </hylex><!-- IDREF list -->
  1138. <hylex ltn=idrn> (IDREF | #NULL)       </hylex><!-- IDREF or #NULL -->
  1139. <hylex ltn=names> (NAME, (s+, NAME)*)  </hylex><!-- name list -->
  1140. <hylex ltn=numl>(NUMBER, (s+, NUMBER)*)</hylex><!-- number list -->
  1141. <hylex ltn=gil> (GI, (s+, GI)*)        </hylex><!-- GI list -->
  1142. <hylex ltn=idr2> (IDREF, s+, IDREF)    </hylex><!-- IDREF pair -->
  1143. <hylex ltn=idr2l> (idr2, (s+, idr2)*)  </hylex><!-- IDREF pair list -->
  1144. <hylex ltn=idr3> (IDREF, s+, IDREF, s+, IDREF)
  1145.                                        </hylex><!-- IDREF triple -->
  1146. <hylex ltn=idr3l> (idr3, (s+, idr3)*)  </hylex><!-- IDREF triple list -->
  1147. <hylex ltn=frac> (NUMBER, s+, NUMBER)  </hylex><!-- unsigned fraction -->
  1148. <hylex ltn=fracs> (frac, (s+, frac)*)  </hylex><!-- unsigned fraction list -->
  1149. <hylex ltn=snum> (("+"|"-")?,NUMBER)   </hylex><!-- signed number -->
  1150. <hylex ltn=nzdigit> ("1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9")
  1151.                                        </hylex><!-- non-zero digit -->
  1152. <hylex ltn=unzi> (nzdigit,Digit*)      </hylex><!-- unsigned non-zero integer-->
  1153. <hylex ltn=snzi> (("+"|"-")?,unzi)     </hylex><!-- signed non-zero integer -->
  1154. <hylex ltn=token> (nmchar+)            </hylex><!-- token -->
  1155. <hylex ltn=tokl> (token, (s+, token)*) </hylex><!-- token list -->
  1156. <hylex ltn=date> ((snum,"-")?,NUMBER?,"-",NUMBER?)
  1157.                                        </hylex><!-- UTC date -->
  1158. <hylex ltn=timeoday> (NUMBER?,":",NUMBER?,(":",NUMBER)?,(".",Digit+)?)
  1159.                                        </hylex><!-- absolute time -->
  1160. <hylex ltn=juldate> (snum)             </hylex><!-- Julian date -->
  1161.  
  1162.           <!-- HyTime Measurement Unit Ratio (HMUratio) -->
  1163. <!-- A HyFunk marker function for use in derived extent specifications only.
  1164.      The function element accepts a frac in its args and multiplies
  1165.      it by the qcnt of the derivation scope.  An optional GI of an axis can
  1166.      be included as the third arg if the extent is multidimensional.
  1167.  
  1168.      Example of use for one dimension, ratio of 3/2:
  1169.  
  1170.      <dexspec><dimspec><marker2>
  1171.                                 <hyfunk usemfn=HMUratio args="3 2">
  1172.      </dexspec>
  1173. -->
  1174. <HyFunk mfn=HMUratio>@div(@mult(%1 @qcnt(#SCOPE %3))%2)</HyFunk>
  1175.  
  1176. <!-- The following "measure" elements comprise the public text identified as:
  1177.      "ISO/IEC 10744:1991::DIS//TEXT Useful Measurement Domains//EN"
  1178. -->
  1179.  
  1180. <measure smu=gquantum>
  1181.   <granule gn=quantum         gd="      1      1 GQUANTUM">
  1182.   <granule gn=bit-combination gd="      1      1 quantum">
  1183.   <granule gn=token           gd="      1      1 quantum">
  1184.   <granule gn=node            gd="      1      1 quantum">
  1185. </measure>
  1186.  
  1187. <measure smu=virtime>
  1188.   <granule gn=vtu             gd="      1      1 VIRTIME">
  1189. </measure>
  1190.  
  1191. <measure smu=virspace>
  1192.   <granule gn=vsu             gd="      1      1 VIRSPACE">
  1193. </measure>
  1194.  
  1195. <measure smu=SIsecond>
  1196.   <granule gn=Ysec            gd="      1   1000 Zsec">
  1197.   <granule gn=Zsec            gd="      1   1000 asec">
  1198.   <granule gn=asec            gd="      1   1000 fsec">
  1199.   <granule gn=fsec            gd="      1   1000 psec">
  1200.   <granule gn=psec            gd="      1   1000 nsec">
  1201.   <granule gn=nsec            gd="      1   1000 usec">
  1202.   <granule gn=usec            gd="      1   1000 msec">
  1203.   <granule gn=msec            gd="      1     10 csec">
  1204.   <granule gn=csec            gd="      1     10 dsec">
  1205.   <granule gn=dsec            gd="      1     10 second">
  1206.   <granule gn=SMPTE-50        gd="      1     50 second">
  1207.   <granule gn=V1250           gd="      1     50 second">
  1208.   <granule gn=SMPTE-240M      gd="      1     30 second">
  1209.   <granule gn=SMPTE-30        gd="      1     30 second">
  1210.   <granule gn=SMPTE-30-drop   gd="    100   2997 second">
  1211.   <granule gn=SMPTE-25        gd="      1     25 second">
  1212.   <granule gn=PAL             gd="      1     25 second">
  1213.   <granule gn=SECAM           gd="      1     25 second">
  1214.   <granule gn=European        gd="      1     25 second">
  1215.   <granule gn=SMPTE-24        gd="      1     24 second">
  1216.   <granule gn=motion-picture  gd="      1     24 second">
  1217.   <granule gn=PC-tick         gd="     10    182 second">
  1218.   <granule gn=SMPTE-24-drop   gd="    100   2396 second">
  1219.   <granule gn=second          gd="      1      1 SISECOND">
  1220.   <granule gn=dasec           gd="     10      1 second">
  1221.   <granule gn=hsec            gd="     10      1 dasec">
  1222.   <granule gn=ksec            gd="     10      1 hsec">
  1223.   <granule gn=Msec            gd="   1000      1 ksec">
  1224.   <granule gn=Gsec            gd="   1000      1 Msec">
  1225.   <granule gn=Tsec            gd="   1000      1 Gsec">
  1226.   <granule gn=Psec            gd="   1000      1 Tsec">
  1227.   <granule gn=Esec            gd="   1000      1 Psec">
  1228.   <granule gn=Zsec            gd="   1000      1 Esec">
  1229.   <granule gn=Ysec            gd="   1000      1 Zsec">
  1230.   <granule gn=minute          gd="     60      1 second">
  1231.   <granule gn=quarter-hour    gd="     15      1 minute">
  1232.   <granule gn=half-hour       gd="     30      1 minute">
  1233.   <granule gn=hour            gd="     60      1 minute">
  1234.   <granule gn=day             gd="     24      1 hour">
  1235.   <granule gn=week            gd="      7      1 day">
  1236.   <granule gn=fortnight       gd="      2      1 week">
  1237. <!-- Year and the granules based on it might not be accurate enough
  1238.      for some applications. -->
  1239.   <granule gn=year            gd="3652425  10000 day">
  1240.   <granule gn=decade          gd="     10      1 year">
  1241.   <granule gn=millenium       gd="   1000      1 year">
  1242. </measure>
  1243.  
  1244. <measure smu=SImeter>
  1245.   <granule gn=ym              gd="      1   1000 zm">
  1246.   <granule gn=zm              gd="      1   1000 am">
  1247.   <granule gn=am              gd="      1   1000 fm">
  1248.   <granule gn=fm              gd="      1   1000 pm">
  1249.   <granule gn=pm              gd="      1   1000 nm">
  1250.   <granule gn=angstrom        gd="      1     10 nm">
  1251.   <granule gn=nm              gd="      1   1000 um">
  1252.   <granule gn=um              gd="      1   1000 mm">
  1253.   <granule gn=mm              gd="      1     10 cm">
  1254.   <granule gn=cm              gd="      1     10 dm">
  1255.   <granule gn=dm              gd="      1     10 meter">
  1256.   <granule gn=meter           gd="      1      1 SIMETER">
  1257.   <granule gn=dam             gd="     10      1 meter">
  1258.   <granule gn=hm              gd="     10      1 dam">
  1259.   <granule gn=km              gd="     10      1 hm">
  1260.   <granule gn=Mm              gd="   1000      1 km">
  1261.   <granule gn=nautical-mile   gd="   1852      1 meter">
  1262.   <granule gn=Gm              gd="   1000      1 Mm">
  1263.   <granule gn=AU              gd="      1 206265 parsec">
  1264.   <granule gn=Tm              gd="   1000      1 Gm">
  1265.   <granule gn=lightyear       gd="    100    326 parsec">
  1266.   <granule gn=Pm              gd="   1000      1 Tm">
  1267.   <granule gn=parsec          gd="   3086      1 Tm">
  1268.   <granule gn=Em              gd="   1000      1 Pm">
  1269.   <granule gn=Zm              gd="   1000      1 Em">
  1270.   <granule gn=Ym              gd="   1000      1 Zm">
  1271.   <granule gn=microinch       gd="      1   1000 milliinch">
  1272.   <granule gn=milliinch       gd="      1   1000 inch">
  1273.   <granule gn=point           gd="      1     12 pica">
  1274.   <granule gn=pica            gd="      1      6 inch">
  1275.   <granule gn=barleycorn      gd="      1      3 inch">
  1276.   <granule gn=inch            gd="    100    254 cm">
  1277.   <granule gn=thumb           gd="      1      1 inch">
  1278.   <granule gn=hand            gd="      4      1 inch">
  1279.   <granule gn=foot            gd="     12      1 inch">
  1280.   <granule gn=cubit           gd="     18      1 inch">
  1281.   <granule gn=royal-cubit     gd="     24      1 inch">
  1282.   <granule gn=yard            gd="      3      1 foot">
  1283.   <granule gn=fathom          gd="      6      1 foot">
  1284.   <granule gn=perch           gd="     11      2 yard">
  1285.   <granule gn=pole            gd="      1      1 perch">
  1286.   <granule gn=rod             gd="      1      1 perch">
  1287.   <granule gn=chain           gd="     66      1 feet">
  1288.   <granule gn=furlong         gd="    220      1 yard">
  1289.   <granule gn=quarter-mile    gd="    440      1 yard">
  1290.   <granule gn=mile            gd="   1760      1 yard">
  1291.   <granule gn=league          gd="      7      1 mile">
  1292. </measure>
  1293.  
  1294. </doc>
  1295.  
  1296.